#ifndef MAIN_MOTOR_H
#define MAIN_MOTOR_H

#include <stdint.h>
#include <stdbool.h>

// 电机状态枚举
typedef enum {
    MOTOR_STATE_STOPPED,    // 停止状态
    MOTOR_STATE_STARTING,   // 启动中
    MOTOR_STATE_RUNNING,    // 正常运行
    MOTOR_STATE_PROTECTION  // 保护状态
} MotorState;

// 电机错误枚举
typedef enum {
    MOTOR_ERROR_NONE,       // 无错误
    MOTOR_ERROR_UNDER_CURRENT, // 电流过低
    MOTOR_ERROR_OVER_CURRENT,  // 电流过高
    MOTOR_ERROR_START_FAILED   // 启动失败
} MotorError;

// 电机配置参数
typedef struct {
    uint32_t min_current;    // 最小正常电流(mA)
    uint32_t max_current;    // 最大正常电流(mA)
    uint32_t start_timeout;  // 启动超时时间(ms)
    uint32_t retry_count;    // 启动重试次数
    uint32_t protection_time;// 保护时间(ms)
} MotorConfig;

// 初始化电机控制模块
void motor_init(const MotorConfig* config);

// 启动电机
void motor_start(void);

// 停止电机
void motor_stop(void);

// 电机状态处理(需周期性调用)
void motor_process(uint32_t current);

// 获取当前电机状态
MotorState motor_get_state(void);

// 获取当前电机错误
MotorError motor_get_error(void);

// 重置电机保护状态
void motor_reset_protection(void);

// 检查电机是否正常运行
bool motor_is_normal(void);

#endif // MAIN_MOTOR_H
